import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 阿宾
 * Date: 2024-11-13
 * Time: 08:24
 */
public class MyStack {
    private int[] elem;
    private int usedSize;//类似下标，指向的位置即是要插入元素位置，且这个位置没有元素

    private static final int DEFAULT_CAPACITY = 10;
    public MyStack(){
        this.elem = new int[DEFAULT_CAPACITY];
    }

    /**
     * 进栈,并返回进栈元素
     * @param data
     * @return
     */
    public int push(int data){
        //1.判断栈是否满
        if(isFull()){
            //扩容
            this.elem = Arrays.copyOf(this.elem,2*this.elem.length);
        }
        elem[usedSize++] = data;
        return data;
    }
    private boolean isFull(){
        return this.usedSize == this.elem.length;
    }

    /**
     * 将栈顶元素出栈并返回
     * @return
     */
    public int pop() {
        //1.判断栈是否为空
        if(empty()){
            System.out.println("栈为空，出栈失败");
            return -1;
        }

        int e = this.elem[--usedSize];
        return e;
    }

    /**
     * 获取栈顶元素
     * @return
     */
    public int peek(){
        //1.判断栈是否为空
        if(empty()){
            System.out.println("栈为空，获取栈顶元素失败");
            return -1;
        }

        return this.elem[usedSize-1];
    }

    /**
     * 获取栈中有效元素个数
     * @return
     */
    public int size(){
        return this.usedSize;
    }

    /**
     * 判断栈是否为空
     * @return
     */
    public boolean empty(){
        if(this.usedSize == 0){
            return true;
        }
        return false;
    }
}
